#include "widget3.h"
#include <QDialog>
#include <QFileDialog>
#include <QColorDialog> //引用 QColorDialog 类


Widget3::Widget3(QWidget *parent) : QWidget(parent)
{
    init();
    //日期选择组件
    //initTimeComponent();

    //登录窗口
    showLogin();

    //文件对话框
    //showFile();

    //颜色对话框
   // showColor();

    //进度条
    //progressBar();

    //定时器
    //timer();

}
//初始化操作
void Widget3::init(){
    setWindowTitle("组件的使用");
    setGeometry(200, 200, width, height);

}
//初始化时间组建
void Widget3::initTimeComponent(){
    //实例 QLabel 控件
    label = new QLabel(this);
    label->setText("选择日期:");
    //位置
    label->setGeometry(QRect(50,50,100,25));
    lineEdit = new QLineEdit(this);
    lineEdit->setGeometry(QRect(110,50,150,22));
    //事件
    connect(lineEdit,SIGNAL(cursorPositionChanged(int,int)),this,SLOT(showTime()));
    //实例时间控件
    calendarWidget = new QCalendarWidget(this);
    //位置
    calendarWidget->setGeometry(20,75,350,180);
    //隐藏时间控件
    calendarWidget->setHidden(true);
    //时间控件点击事件
    connect(calendarWidget,SIGNAL(clicked(QDate)),this,SLOT(setData()));
}
//展示登录窗口
void Widget3::showLogin(){
    //窗体最小宽度高度
    setMinimumSize(width, height);
    //窗体最大宽度高度
    setMaximumSize(width, height);

    //实例用户名密码控件
    usrLabel = new QLabel(tr("用户名:"));
    pwdLabel = new QLabel(tr("密 码:"));
    usrLineEdit = new QLineEdit;
    pwdLineEdit = new QLineEdit;
    //密码*号输入
    pwdLineEdit->setEchoMode(QLineEdit::Password);
    //限制输入 12 位
    usrLineEdit->setMaxLength(12);
    pwdLineEdit->setMaxLength(12);

    //实例网格布局控件
    gridlayout = new QGridLayout();

    //添加布局 0,0,1,1 行 列 行间距 列间距
    gridlayout->addWidget(usrLabel,0,0,1,1);
    gridlayout->addWidget(usrLineEdit,0,1,1,1);
    //间隔
    gridlayout->setSpacing(20);

    gridlayout->addWidget(pwdLabel,1,0,1,1);
    gridlayout->addWidget(pwdLineEdit,1,1,1,1);

    //实例按钮控件
    okBtn = new QPushButton(tr("确定"));
    cancelBtn = new QPushButton(tr("取消"));

    connect(okBtn,SIGNAL(clicked()),this,SLOT(accept()));
    connect(cancelBtn,SIGNAL(clicked()),this,SLOT(reject()));

    QHBoxLayout *hboxLayout = new QHBoxLayout;
    hboxLayout->setSpacing(60);

    //横向布局填充控件
    hboxLayout->addWidget(okBtn);
    hboxLayout->addWidget(cancelBtn);

    //实例纵向布局填充刚刚实例的两个布局
    vboxLayout = new QVBoxLayout;
    vboxLayout->addLayout(gridlayout);
    vboxLayout->addLayout(hboxLayout);

    //显示内容
    this->setLayout(vboxLayout);

}
//文件对话框
void Widget3::showFile(){
    //实例单行文本控件
    filename = new QLineEdit(this);
    //位置
    filename->setGeometry(QRect(50,50,230,25));
    //实例按钮
    button = new QPushButton(this);
    //按钮位置
    button->setGeometry(QRect(280,50,80,25));
    //按钮名
    button->setText("浏览");
    //按钮点击事件
    connect(button,SIGNAL(clicked()),this,SLOT(showFiles()));

}

//颜色选择
void Widget3::showColor(){
    //实例按钮
    colorButton = new QPushButton(this);
    //位置
    colorButton->setGeometry(QRect(200,50,80,25));
    //按钮值
    colorButton->setText("选择颜色");
    //按钮事件
    connect(colorButton,SIGNAL(clicked()),this,SLOT(selectColor()));
    //实例 QLabel
    colorLabel = new QLabel(this);
    //label 位置
    colorLabel->setGeometry(QRect(50,50,100,25));
    //label 值
    colorLabel->setText("我的颜色可以改变");

}
//进度条展示
void Widget3::progressBar(){
    //实例 QProgressBar 控件
    pBar = new QProgressBar(this);
    //位置
    pBar->setGeometry(QRect(50,50,200,20));
    //范围值
    pBar->setRange(0,100000-1);
    //初始值
    pBar->setValue(0);

    //实例 Button
    progressButton = new QPushButton(this);
    //位置
    progressButton->setGeometry(QRect(270,50,80,25));
    //值
    progressButton->setText("开始");
    //事件
    connect(progressButton,SIGNAL(clicked()),this,SLOT(startBar()));
}
//定时器
void Widget3::timer(){
    //实例 QLabel 控件
    timerLable = new QLabel(this);
    //位置
    timerLable->setGeometry(QRect(50,50,200,25));


    //实例 QTimer 控件
    myTimer = new QTimer;
    //timer 时间
    connect(myTimer,SIGNAL(timeout()),this,SLOT(timerTime()));
    //执行
    myTimer->start(1000);


}

//显示时间组建
void Widget3::showTime(){
    calendarWidget->setHidden(false);
}

//获取时间 隐藏时间组建
void Widget3::setData(){
    //接收选择时间
    QDate date = calendarWidget->selectedDate();
    //时间格式化
    QString str = date.toString("yyyy-MM-dd");
    //赋值
    lineEdit->setText(str);
    //日期控件隐藏
    calendarWidget->setHidden(true);
}
//登录 确定按钮事件
void Widget3::accept(){

    if(usrLineEdit->text().trimmed() == "admin" && pwdLineEdit->text().trimmed() == "admin")
    {
        QMessageBox::about(this, "提示", "登录成功");
    }else{
        QMessageBox::warning(this,"警告","用户名或密码错误!!!",
        QMessageBox::Yes);
        usrLineEdit->setFocus();
    }
}
//登录取消按钮事件
void Widget3::reject(){
    this->close();
}

//显示文件对话框
void Widget3::showFiles(){
    //定义变量 str 接收 QFileDialog 对话框获取的文件路径
    QString str = QFileDialog::getOpenFileName(this,"选择文件","/","textfile(*.txt);;C file(*.cpp);;All file(*.*)");
    //将变量绑定 QLineEdit 控件
    filename->setText(str.toUtf8());
}
//选择颜色
void Widget3::selectColor(){
    //颜色对话框设置
    QColorDialog::setCustomColor(0,QRgb(0x0000FF));
    //定义 QColor 接收值
    QColor color = QColorDialog::getColor(QColor(0,255,0));
    //定义 QPalette(调色板类)
    QPalette p = palette();
    //调色板接收颜色
    p.setColor(QPalette::WindowText,QColor(color));
    //给 label 绑定颜色
    colorLabel->setPalette(p);

}

//进度条
void Widget3::startBar(){
    for(int i=0;i<100000;i++){
        //100%结束
        if(i == 99999){
            progressButton->setText("结束");
        }
        //赋值
        pBar->setValue(i);
    }
}

//定时任务
void Widget3::timerTime(){
    //获取系统时间
    QDateTime sysTime = QDateTime::currentDateTime();
    timerLable->setText(sysTime.toString());

}
